﻿using Admin.NET.Core;
using System.ComponentModel.DataAnnotations;

namespace Admin.NET.Application;

    /// <summary>
    /// 考试基础输入参数
    /// </summary>
    public class KaoshiBaseInput
    {
        /// <summary>
        /// 考试名称
        /// </summary>
        public virtual string Name { get; set; }
        
        /// <summary>
        /// 学年学期
        /// </summary>
        public virtual long? XuenianXueqiId { get; set; }
        
        /// <summary>
        /// 考试类别
        /// </summary>
        public virtual int LeiBie { get; set; }
        
        /// <summary>
        /// 考号前缀
        /// </summary>
        public virtual string? PerNum { get; set; }
        
        /// <summary>
        /// 开始时间
        /// </summary>
        public virtual DateTime? StartDate { get; set; }
        
        /// <summary>
        /// 结束时间
        /// </summary>
        public virtual DateTime? EndDate { get; set; }
        
        /// <summary>
        /// 考试状态
        /// </summary>
        public virtual int Status { get; set; }
        
        /// <summary>
        /// 备注
        /// </summary>
        public virtual string? Beizhu { get; set; }
        
        /// <summary>
        /// 创建者姓名
        /// </summary>
        public virtual string? CreateUserName { get; set; }
        
        /// <summary>
        /// 修改者姓名
        /// </summary>
        public virtual string? UpdateUserName { get; set; }
        
    }

    /// <summary>
    /// 考试分页查询输入参数
    /// </summary>
    public class KaoshiInput : BasePageInput
    {
        /// <summary>
        /// 关键字查询
        /// </summary>
        public string? SearchKey { get; set; }

        /// <summary>
        /// 考试名称
        /// </summary>
        public string? Name { get; set; }
        
        /// <summary>
        /// 学年学期
        /// </summary>
        public long? XuenianXueqiId { get; set; }
        
        /// <summary>
        /// 考试类别
        /// </summary>
        public string? LeiBie { get; set; }
        
        /// <summary>
        /// 考号前缀
        /// </summary>
        public string? PerNum { get; set; }
        
        /// <summary>
        /// 开始时间
        /// </summary>
        public DateTime? StartDate { get; set; }
        
        /// <summary>
         /// 开始时间范围
         /// </summary>
         public List<DateTime?> StartDateRange { get; set; } 
        /// <summary>
        /// 结束时间
        /// </summary>
        public DateTime? EndDate { get; set; }
        
        /// <summary>
         /// 结束时间范围
         /// </summary>
         public List<DateTime?> EndDateRange { get; set; } 
        /// <summary>
        /// 考试状态
        /// </summary>
        public string? Status { get; set; }
        
        /// <summary>
        /// 备注
        /// </summary>
        public string? Beizhu { get; set; }
        
    }

    /// <summary>
    /// 考试增加输入参数
    /// </summary>
    public class AddKaoshiInput : KaoshiBaseInput
    {
        /// <summary>
        /// 考试名称
        /// </summary>
        [Required(ErrorMessage = "考试名称不能为空")]
        public override string Name { get; set; }
        
        /// <summary>
        /// 学年学期
        /// </summary>
        [Required(ErrorMessage = "学年学期不能为空")]
        public override long? XuenianXueqiId { get; set; }
        
        /// <summary>
        /// 考试类别
        /// </summary>
        [Required(ErrorMessage = "考试类别不能为空")]
        public override int LeiBie { get; set; }
        
        /// <summary>
        /// 考试状态
        /// </summary>
        [Required(ErrorMessage = "考试状态不能为空")]
        public override int Status { get; set; }
        
    }

    /// <summary>
    /// 考试删除输入参数
    /// </summary>
    public class DeleteKaoshiInput : BaseIdInput
    {
    }

    /// <summary>
    /// 考试更新输入参数
    /// </summary>
    public class UpdateKaoshiInput : KaoshiBaseInput
    {
        /// <summary>
        /// 主键Id
        /// </summary>
        [Required(ErrorMessage = "主键Id不能为空")]
        public long Id { get; set; }
        
    }

    /// <summary>
    /// 考试主键查询输入参数
    /// </summary>
    public class QueryByIdKaoshiInput : DeleteKaoshiInput
    {

    }

public class PrintBanjiKaoshiIdInput
{
    public long KaoshiId { get; set; } 
}

public class CopyKaoshiIdInput: BaseIdInput
{
}
